package lc;

import java.util.*;

public class lc2170 {
    public static void main(String[] args) {
        minimumOperations(new int[]{3,1,3,2,4,3});
    }
    public static int minimumOperations(int[] nums) {
        //分组取众数，或者用map得到出现次数
        Map<Integer, Integer> map1 = new HashMap<>();
        Map<Integer, Integer> map2 = new HashMap<>();

        for(int i = 0; i < nums.length; i += 2){
            map1.put(nums[i], map1.getOrDefault(nums[i], 0) + 1);
            if(i + 1 < nums.length) map2.put(nums[i + 1], map2.getOrDefault(nums[i + 1], 0) + 1);
        }
        List<Map.Entry<Integer,Integer>> list1 = new ArrayList<>(map1.entrySet());
        Collections.sort(list1, (a, b) ->{
            return b.getValue() - a.getValue();
        });
        List<Map.Entry<Integer,Integer>> list2 = new ArrayList<>(map1.entrySet());
        Collections.sort(list2, (a, b) ->{
            return b.getValue() - a.getValue();
        });
        if (list1.get(0).getKey() != list2.get(0).getKey())
            return nums.length - list1.get(0).getValue() - list2.get(0).getValue();
        else if (list1.get(0).getValue() > list2.get(0).getValue()) {
            return nums.length - list1.get(0).getValue() - list2.get(1).getValue();

        }else return nums.length - list1.get(1).getValue() - list2.get(0).getValue();

    }
}
